package com.xm;

public class DataType {
    static boolean bool;
    boolean bo;
    static byte by;
    static char ch;
    static double d;
    static float f;
    static int i = 4;
    static long l;
    static short sh;
    static String str;

    public static void main(String[] args) {
        System.out.println("Bool :" + bool);
        System.out.println("Byte :" + by);
        System.out.println("Character:" + ch);
        System.out.println(ch == '\u0000');
        System.out.println("Double :" + d);
        System.out.println("Float :" + f);
        System.out.println("Integer :" + i);
        System.out.println("Long :" + l);
        System.out.println("Short :" + sh);
        System.out.println("String :" + str);

        char c1 = '1';  // 49
        char c2 = 'a';  // 97
        // 字符 1, 对应的Unicode码数值等于十进制49。
        System.out.println(c1);
        System.out.println(c2);
        // 字符+整数连接时，字符会隐式转换为其对应的Unicode值49，
        System.out.println(c1 + c2);
        System.out.println(c1 + c2);

        // 因为 byte 类型是 8 位，范围是-2^7~2^7-1,即-128~127，所以当 int 强制转换为 byte 类型时，值 128 就会导致溢出。
        int i = 128;
        byte b = (byte) i;
        System.out.println("b = " + b);// 打印出的值为-128

        new DataType().test(3);
    }

    void test(int i) {
        // 当有同名变量，就近取值
        System.out.println("局部变量：" + i);
        // this指本对象，故this.i指类变量i
        System.out.println("类变量：" + this.i);

        System.out.println(this.i = i);
        System.out.println(this.i);
    }
}
